package com.example.ercmssystem2.service;

import com.example.ercmssystem2.entity.Resource;
import com.example.ercmssystem2.entity.ResourceType;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface ResourceService {

    // 创建资源
    Resource createResource(Resource resource, Long createdBy);

    // 更新资源
    Resource updateResource(Long id, Resource resource);

    // 删除资源
    void deleteResource(Long id);

    // 获取资源详情
    Resource getResourceById(Long id);

    // 获取所有资源
    List<Resource> getAllResources();

    // 根据部门获取资源
    List<Resource> getResourcesByDepartment(Long departmentId);

    // 根据状态获取资源
    List<Resource> getResourcesByStatus(String status);

    // 根据资源类型获取资源
    List<Resource> getResourcesByType(Long resourceTypeId);

    // 获取用户可管理的资源
    List<Resource> getUserManageableResources(Long userId);

    // 获取部门可用资源
    List<Resource> getAvailableResourcesByDepartment(Long departmentId);

    // 获取所有可用资源
    List<Resource> findAvailableResources();

    // 分配资源到部门
    Resource assignResourceToDepartment(Long resourceId, Long departmentId);

    // 更新资源状态
    Resource updateResourceStatus(Long resourceId, String status);

    // 验证资源名称是否唯一
    boolean isResourceNameUnique(String name, Long excludeId);

    // 检查用户是否有资源管理权限
    boolean hasResourcePermission(Long userId, Long resourceId);

    // 获取资源类型列表
    List<ResourceType> getAllResourceTypes();

    // 创建资源类型
    ResourceType createResourceType(ResourceType resourceType);

    // 更新资源类型
    ResourceType updateResourceType(Long id, ResourceType resourceType);

    // 删除资源类型
    void deleteResourceType(Long id);
    
    // ========== 统计分析相关方法 ==========
    
    /**
     * 获取资源利用统计
     */
    Map<String, Object> getResourceUtilizationStatistics(LocalDateTime start, LocalDateTime end);
} 